package com.teen9g.utils;

import com.teen9g.dto.CanteenShopDTO;
import com.teen9g.dto.MaimaiChunithmDTO;
import com.teen9g.dto.PlaygroundDTO;
import com.teen9g.dto.TeachingBuildingDTO;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

// 字符串工具类
public class StringUtil {
    //识别修改食堂店铺的时候进行了什么操作
    public String CS_getOperation(CanteenShopDTO CS1, CanteenShopDTO CS2) {
        StringBuffer sb = new StringBuffer();
        boolean hasAppended = false; // 用于标记是否已经添加了内容

        if (!CS1.getShopName().equals(CS2.getShopName())) {
            sb.append("名称");
            hasAppended = true;
        }
        if (!CS1.getShopAt().equals(CS2.getShopAt())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("所在食堂");
            hasAppended = true;
        }
        if (!CS1.getShopFloor().equals(CS2.getShopFloor())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("楼层");
            hasAppended = true;
        }
        if (!CS1.getShopRelativePosition().equals(CS2.getShopRelativePosition())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("相对位置");
            hasAppended = true;
        }
        if (!CS1.getShopDescription().equals(CS2.getShopDescription())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("描述");
            hasAppended = true;
        }
        if (!CS1.getShopImage().equals(CS2.getShopImage())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("图片");
            hasAppended = true;
        }
        if (!CS1.getShopPayment().equals(CS2.getShopPayment())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("支付方式");
        }
        return sb.toString();
    }

    //识别修改教学楼信息的时候进行了什么操作
    public String TB_getOperation(TeachingBuildingDTO TB1, TeachingBuildingDTO TB2)
            throws JSONException {
        StringBuffer sb = new StringBuffer();
        boolean hasAppended = false; // 用于标记是否已经添加了内容

        if (!TB1.getBuildingId().equals(TB2.getBuildingId())) {
            sb.append("教学楼编号");
            hasAppended = true;
        }
        if (!TB1.getBuildingName().equals(TB2.getBuildingName())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("教学楼名称");
            hasAppended = true;
        }
        if (!TB1.getRoomNumber().equals(TB2.getRoomNumber())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("房间号");
            hasAppended = true;
        }
        if (!TB1.getContentTitle().equals(TB2.getContentTitle())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容标题");
            hasAppended = true;
        }
        if (!TB1.getContentDescription().equals(TB2.getContentDescription())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容描述");
            hasAppended = true;
        }
        // 比较图片信息
        JSONArray imageArray1 = new JSONArray(TB1.getContentImage());
        JSONArray imageArray2 = new JSONArray(TB2.getContentImage());

        List<String> imageList1 = new ArrayList<>();
        List<String> imageList2 = new ArrayList<>();

        // 将 JSON 数组解析为 List<String>
        for (int i = 0; i < imageArray1.length(); i++) {
            imageList1.add(imageArray1.getString(i));
        }
        for (int i = 0; i < imageArray2.length(); i++) {
            imageList2.add(imageArray2.getString(i));
        }

        // 排序后比较（忽略顺序）
        Collections.sort(imageList1);
        Collections.sort(imageList2);

        if (!imageList1.equals(imageList2)) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容图片");
            hasAppended = true;
        }

        return sb.toString();
    }

    public String MC_getOperation(MaimaiChunithmDTO maimaiChunithmDTO, MaimaiChunithmDTO temp)
            throws JSONException {
        StringBuffer sb = new StringBuffer();
        boolean hasAppended = false; // 用于标记是否已经添加了内容

        // 比较店铺名称
        if (!maimaiChunithmDTO.getShopName().equals(temp.getShopName())) {
            sb.append("店铺名称");
            hasAppended = true;
        }

        // 比较游戏分类
        if (!maimaiChunithmDTO.getGameCategory().equals(temp.getGameCategory())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("游戏分类");
            hasAppended = true;
        }

        // 比较游戏价格
        if (!maimaiChunithmDTO.getGamePrice().equals(temp.getGamePrice())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("游戏价格");
            hasAppended = true;
        }

        // 比较游戏描述
        if (!maimaiChunithmDTO.getGameDescription().equals(temp.getGameDescription())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("游戏描述");
            hasAppended = true;
        }

        // 比较游戏指引位置
        if (!maimaiChunithmDTO.getGameGuidePosition().equals(temp.getGameGuidePosition())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("游戏指引位置");
            hasAppended = true;
        }

        // 比较内容图片
        JSONArray imageArray1 = new JSONArray(maimaiChunithmDTO.getContentImage());
        JSONArray imageArray2 = new JSONArray(temp.getContentImage());

        List<String> imageList1 = new ArrayList<>();
        List<String> imageList2 = new ArrayList<>();

        // 将 JSON 数组解析为 List<String>
        for (int i = 0; i < imageArray1.length(); i++) {
            imageList1.add(imageArray1.getString(i));
        }
        for (int i = 0; i < imageArray2.length(); i++) {
            imageList2.add(imageArray2.getString(i));
        }

        // 排序后比较（忽略顺序）
        Collections.sort(imageList1);
        Collections.sort(imageList2);

        if (!imageList1.equals(imageList2)) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容图片");
            hasAppended = true;
        }

        return sb.toString();
    }
    // 辅助方法：比较两个 List 是否相等
    private boolean compareList(List<String> list1, List<String> list2) {
        if (list1 == null || list2 == null) {
            return list1 == list2; // 如果一个为 null，另一个也必须为 null
        }
        return list1.equals(list2);
    }


    public String PG_getOperation(PlaygroundDTO playgroundDTO, PlaygroundDTO temp) throws JSONException {
        StringBuffer sb = new StringBuffer();
        boolean hasAppended = false; // 用于标记是否已经添加了内容

        // 比较内容标题
        if (!playgroundDTO.getContentTitle().equals(temp.getContentTitle())) {
            sb.append("内容标题");
            hasAppended = true;
        }

        // 比较内容分类
        if (!playgroundDTO.getContentCategory().equals(temp.getContentCategory())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容分类");
            hasAppended = true;
        }

        // 比较是否需要额外消费
        if (!playgroundDTO.getContentPrice().equals(temp.getContentPrice())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("是否需要额外消费");
            hasAppended = true;
        }

        // 比较内容描述
        if (!playgroundDTO.getContentDescription().equals(temp.getContentDescription())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容描述");
            hasAppended = true;
        }

        // 比较内容指引位置
        if (!playgroundDTO.getContentGuidePosition().equals(temp.getContentGuidePosition())) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容指引位置");
            hasAppended = true;
        }

        // 比较内容图片
        JSONArray imageArray1 = new JSONArray(playgroundDTO.getContentImage());
        JSONArray imageArray2 = new JSONArray(temp.getContentImage());

        List<String> imageList1 = new ArrayList<>();
        List<String> imageList2 = new ArrayList<>();

        // 将 JSON 数组解析为 List<String>
        for (int i = 0; i < imageArray1.length(); i++) {
            imageList1.add(imageArray1.getString(i));
        }
        for (int i = 0; i < imageArray2.length(); i++) {
            imageList2.add(imageArray2.getString(i));
        }

        // 排序后比较（忽略顺序）
        Collections.sort(imageList1);
        Collections.sort(imageList2);

        if (!imageList1.equals(imageList2)) {
            if (hasAppended) {
                sb.append(", ");
            }
            sb.append("内容图片");
            hasAppended = true;
        }

        return sb.toString();
    }
}
